Computer programs are as known the sets of instructions that are passed to computers and that, when executed, direct the computer operation, so as to perform the desired tasks.
The programs that are passed to and that can be directly executed by the computers are in the so-called “machine code”, which is a sequence of binary digits, i.e. ones and zeroes that are hardly meaningful to humans. In order to make the task of writing and reading, e.g. for maintaining computer programs easier, not only for the writers, so-called “high-level” programming languages have been created, which allow to express data structures and algorithms in a way closer to human language, thereby resulting less difficult to be read and understood. Very popular high-level languages are for example the Pascal, the C, the C++, the Basic, the Java, just to cite a few.
In particular, most of the modern high-level programming languages, like for example the C++ and the Java, are based on the concepts of “object-oriented” programming.
The programmer, using for example a text editor, writes the so-called “source code” program, which is a listing of expressions, statements, declarations, instructions etc. in one of the available high-level languages. Once the source code writing is terminated, a compiler program translates the source code into machine language, and then a linker program performs the final operations necessary to obtain an executable (“.exe”) program which is directly executable by the computer. In some cases, like for example the Basic case, a runtime interpreter program is provided that interprets the programmer instructions during the execution thereof.
Software tools providing an Integrated software Development Environment (IDE) are known; these tools provide a programming environment integrated into an application that makes available to the software developer, in addition to a textual source code editor, a graphic code builder, with which the programmer can interact through a Graphical User Interface (GUI), a source code compiler, a linker, possibly an interpreter, and a debugger; examples of IDE tools are Visual Studio, Delphi, Jbuilder, FrontPage, DreamWeaver, just to cite a few; another commercially known software design tool is Rational Rose by IBM Corporation, which is an object-oriented Unified Modelling Language (UML) software design tool intended for visual modelling and component construction of software applications. Another graphical software design tool is LabView.
Most IDE tools implement a so-called “code-completion” feature, that assists the software developers in the task of writing source code by prompting the programmer with suggestions as to how to complete expressions or statements being written. For example, after the programmer types in, in a source code editor, the name of a function or a method, the code-completion feature may display to the programmer an alphabetically-ordered list of all possible arguments for that method or function, from which the programmer may choose the desired one; even more, when the code-completion feature understands that there is only one possible way to complete an expression typed in by the programmer, it may directly inscribe the remaining piece of code necessary to complete the expression.
For example, U.S. Pat. No. 6,314,559 describes a visual development system having a code editor with code completion feature for displaying context sensitive pop-up windows within a source code file. Code completion is implemented at the user interface level, by displaying a code completion dialog box after the user enters a record or class name followed by a period. For a class, the dialog box lists the properties, methods and events appropriate for that class. For a record or structure, the dialog box lists the data members of the record. To complete entry of the expression, the user needs only select an item from the dialog list, whereupon the system automatically enters the selected item in the code. Code completion also operates during input of assignment statements: when the user enters an assignment statement for a variable and presses a hot key (e.g., the combination <ctrl><space_bar>), a list of arguments valid for that variable is displayed; the user can simply select an argument to be entered in the code; similarly, the user can bring up a list of arguments when typing in a procedure, function, or method call and needs to add an argument: in this manner, the user can view the required arguments for a method as he/she enters a method, function, or procedure call.
Code completion is also addressed in US 2005/0015747.